package com.kyl.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.kyl.base.BaseEntity;
import com.kyl.vo.BedVo;
import com.kyl.vo.CheckInConfigVo;
import com.kyl.vo.retreat.ElderVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;


/**
 * 账单实体类
 */
@Data
@ApiModel(value = "账单实体类", description = "对应数据库中账单表结构")
public class Bill extends BaseEntity {

    @ApiModelProperty(value = "账单id")
    private Long id;

    @ApiModelProperty(value = "账单编号")
    private String billNo;

    @ApiModelProperty(value = "账单类型")
    private Integer billType;

    @ApiModelProperty(value = "账单月份")
    private String billMonth;

    @ApiModelProperty(value = "老人id")
    private Long elderId;

    @ApiModelProperty(value = "账单金额")
    private BigDecimal billAmount;

    @ApiModelProperty(value = "应付金额")
    private BigDecimal payableAmount;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "缴费截止日期")
    private LocalDateTime paymentDeadline;

    @ApiModelProperty(value = "交易状态")
    private Integer transactionStatus;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "账单开始时间")
    private LocalDateTime billStartTime;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "账单结束时间")
    private LocalDateTime billEndTime;

    @ApiModelProperty(value = "账单总天数")
    private Integer totalDays;

    @ApiModelProperty(value = "本期应付")
    private BigDecimal currentCost;

    @ApiModelProperty(value = "押金金额")
    private BigDecimal depositAmount;

    @ApiModelProperty(value = "预付款支付金额")
    private BigDecimal prepaidAmount;

    @ApiModelProperty(value = "交易订单号")
    private Long tradingOrderNo;

    @ApiModelProperty(value = "等级名称")
    private String lname;

    @ApiModelProperty(value = "房间类型名称")
    private String typeName;

    private ElderVo elderVo;

    @ApiModelProperty(value = "总欠费金额")
    private BigDecimal total;

    @ApiModelProperty(value = "入住配置")
    private CheckInConfigVo checkInConfigVo;

    @ApiModelProperty(value = "床位信息")
    private BedVo bedVo;
}
